// pages/near/near.js

const app = getApp()
const db = wx.cloud.database()
const _ = db.command

Page({

  /**
   * 页面的初始数据
   */
  data: {
    longitude:'',// 经度
    latitude:'',// 纬度
    markers: []//存放用户信息数组
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    this.getLocation()
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.getLocation()
  },
  
  // 获取用户位置经纬度
  getLocation(){
      wx.getLocation({
        type: 'gcj02',
        success:(res) => {
          // 获取纬度
          const latitude = res.latitude
          // 获取经度
          const longitude = res.longitude
          // 更新组件的用户经纬度信息
          this.setData({
            longitude,
            latitude
          })
          // 操作数据库添加用户位置信息
          this.getNearUsers()
        }
      })
  },

  // 操作数据库添加用户位置信息
  getNearUsers(){
    // 调用user表
    db.collection('users').where({
      location: _.geoNear({ //geoNear：按从近到远的顺序，找出字段值在给定点的附近的记录
        geometry: db.Geo.Point(this.data.longitude , this.data.latitude),//以当前用户位置为中心
        // 范围，单位：米
        minDistance: 0,
        maxDistance: 5000
      }),
      isLocation: true
    }).field({// 需要获取的信息
      longitude: true,
      latitude: true,
      userPhoto: true
    }).get().then((res) =>{ //获取信息成功
      // console.log(res.data)
      let data = res.data
      let result = []
      if(data.length){ //如果附近有用户
        for(let i=0; i < data.length; i++ ){ //遍历附近用户数组
          if(data[i].userPhoto.includes('cloud://')){ //头像路径中包含'cloud://'
            wx.cloud.getTempFileURL({ //用云文件 ID 换取真实链接，公有读的文件获取的链接不会过期，私有的文件获取的链接十分钟有效期。一次最多取 50 个
              fileList: [ data[i].userPhoto ], // 要换取临时链接的云文件 ID 列表
              success: res => {//获取成功

                // 将当前项的用户信息存入到用户信息数组中
                result.push({
                  iconPath: res.fileList[0].tempFileURL,
                  id: data[i]._id,
                  latitude: data[i].latitude,
                  longitude: data[i].longitude,
                  width: 30,
                  height: 30
                })

                // 更新用户信息数组
                this.setData({
                  markers : result
                })
              }
            })
          }
          else{ //头像路径不包含'cloud://'
            result.push({
              iconPath: data[i].userPhoto,
              id: data[i]._id,
              latitude: data[i].latitude,
              longitude: data[i].longitude,
              width: 30,
              height: 30
            })
          }          
        }
        // 更新用户信息数组
        this.setData({
          markers : result
        })
      }
    })
  },

  // 点击附近用户的头像
  markertap(ev){
    // console.log(ev);
    // 跳转到用户的个人信息组件
    wx.navigateTo({
      url: '/pages/detail/detail?userId=' + ev.markerId ,
    })
  }
})